$0
:腳本檔名$1
:檔名後面的第一個參數,以此類推...$#
:後面接參數個數"$@"
: "$1","$2","$3""$*"
: "$1c$2c$3c$4",c 爲分割字元,預設爲空白
shift [n]
我們來個 bash script 來方便說明:
$!/bin/bash
shift 0
echo 0: $0
echo 1: $1
echo 2: $2
echo 3: $3
echo 4: $4
當你輸入 ./shift.sh file1 file2 file3 file4 file5
的時候,會顯示:
0:./shift.sh
1:file1
2:file2
3:file3
4:file4
如果腳本改成這樣:
$!/bin/bash
shift 1
echo 0: $0
echo 1: $1
echo 2: $2
echo 3: $3
echo 4: $4
則結果會變成:
0:./shift.sh
1:file2
2:file3
3:file4
4:file5
上面這兩個腳本的差別在於 shift
,前者把第0個變數移調,但是 $0 代表檔名,shift 是無法對他起任何作用的,因此像後者的 shift 1
就是代表把 $1,也就是檔名之後的第一個參數往左丟掉,因此輸出結果看不到 file1。
https://www.computerhope.com/unix/bash/shift.htm